using System;
using System.Collections.Generic;

using PMServiceDesk.DataType;
using PMServiceDesk.DataAccess;
using PMServiceDesk.Parameters.Constantes;

namespace PMServiceDesk.BusinessLogic
{
    public class DiaCalendarioLogic
    {
        #region Variables

        private DiaCalendarioData _diaCalendarioData;

        #endregion

        #region Constructores

        public DiaCalendarioLogic()
        {
            _diaCalendarioData = new DiaCalendarioData();
        }

        #endregion

        #region Metodos

        public DiaCalendarioType CargarPorId(string id)
        {
            _diaCalendarioData.FiltrarPorId(id);

            return _diaCalendarioData.Cargar();
        }

        public void Grabar(DiaCalendarioType diaCalendario)
        {
            _diaCalendarioData.Grabar(diaCalendario);
        }

        public List<DiaCalendarioType> CargarExplorador(string calendarioId)
        {
            if(calendarioId != "") _diaCalendarioData.FiltrarPorCalendarioId(calendarioId);

            return _diaCalendarioData.CargarListaVista();
        }

        public void RegistrarDiasCalendario(CalendarioType calendario)
        {
            DiaHorarioLogic logicHorario = new DiaHorarioLogic();

            foreach(DiaCalendarioType diaCalendario in calendario.DiasCalendario)
            {
                this.Grabar(diaCalendario);

                foreach(DiaHorarioType horario in diaCalendario.Horarios)
                {
                    horario.DiaCalendarioId = diaCalendario.Id;

                    logicHorario.Grabar(horario);
                }
            }
        }

        public List<DiaCalendarioType> CargarExploradorPaginado(DiaCalendarioType registroBusqueda, int paginaActual = 0, int cantidadMostrar = 0, string orderBy = "")
        {
            _diaCalendarioData.FiltrarPorCalendarioId(registroBusqueda.CalendarioId);

            return _diaCalendarioData.CargarListaVista(paginaActual, cantidadMostrar, orderBy);
        }

        #endregion
    }
}
